package com.jacob.cloud.mall.categoryproduct.service;


import com.github.pagehelper.PageInfo;
import com.jacob.cloud.mall.categoryproduct.model.pojo.Product;
import com.jacob.cloud.mall.categoryproduct.model.request.AddProductReq;
import com.jacob.cloud.mall.categoryproduct.model.request.ProductListReq;
import com.jacob.cloud.mall.categoryproduct.model.request.UpdateProductReq;

public interface IProductService {

    /**
     * 新增商品
     * @param addProductReq 商品信息
     */
    void add(AddProductReq addProductReq);

    /**
     * 更新商品
     * @param updateProductReq 商品信息
     */
    void update(UpdateProductReq updateProductReq);

    /**
     * 根据id删除商品
     * @param productId 商品id
     */
    void delete(Integer productId);

    /**
     * 批量上下架
     * @param ids 商品id数组
     * @param sellStatus 上下架状态
     */
    void batchUpdateSellStatus(Integer[] ids, Integer sellStatus);

    /**
     * 后台商品列表
     * @param pageSize 分页大小
     * @param pageNum 页码
     * @return 包含分页数据的分页对象
     */
    PageInfo<Product> listForAdmin(Integer pageSize, Integer pageNum);

    /**
     * 前台商品列表
     * @param productListReq
     */
    PageInfo<Product> listForCustomer(ProductListReq productListReq);

    /**
     * 商品详情
     * @param id 商品id
     * @return 商品对象
     */
    Product detail(Integer id);

    /**
     * 商品扣库存
     * @param productId
     * @param stock
     */
    void updateStock(Integer productId, Integer stock);
}
